﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QldtSdh.BLL;
using QldtSdh.DAL.Models;
using QldtSdh.GUI.Common;
using QldtSdh.GUI.Utils;
using QldtSdh.Utils;
namespace QldtSdh.GUI.DuLieu
{
    public partial class FormQuanLyHocVien_ChiTiet : BaseDialog
    {
        LopKhoaNganh lopSelected;
        HocVien hocVien;
        KhoaHoc khoaHoc;
        NganhDaoTao nganh;
        int entityToBeAdded = 0;
        public event Common.TListChangedEventHandler OnChanged;
        public FormQuanLyHocVien_ChiTiet(KhoaHoc khoaHoc, NganhDaoTao nganh, LopKhoaNganh lopSelected, HocVien hocVien = null)
        {
            InitializeComponent();
            this.lopSelected = lopSelected;
            this.hocVien = hocVien;
            this.khoaHoc = khoaHoc;
            this.nganh = nganh;
            LoadLop();
            LoadDotTuyenSinh();
            InitInterface();
        }

        void LoadLop()
        {
            if (khoaHoc != null && nganh != null)
            {
                cmbLop.DataSource = BizLopKhoaNganh.GetList(khoaHoc.MaKhoaHocGUID, nganh.MaNganhDaoTaoGUID);
                cmbLop.DisplayMember = "TenLopKhoaNganh";
                cmbLop.ValueMember = "MaLopKhoaNganhGUID";
            }
        }

        void LoadDotTuyenSinh()
        {
            cmbDotTuyenSinh.DataSource = BizDotTuyenSinh.GetList();
            cmbDotTuyenSinh.DisplayMember = "_Nam_DotTuyenSinh";
            cmbDotTuyenSinh.ValueMember = "MaDotTuyenSinhGUID";
        }

        void InitInterface()
        {
            errorNotify.Clear();
            var lop = cmbLop.SelectedItem as LopKhoaNganh;
            if (hocVien != null)
            {
                if (lop != null)
                    cmbLop.SelectedValue = hocVien.MaLopKhoaNganhGUID;
                var dts = cmbDotTuyenSinh.SelectedItem as DotTuyenSinh;
                if (dts != null)
                    cmbDotTuyenSinh.SelectedValue = hocVien.MaDotTuyenSinhGUID;
                txtHo.Text = hocVien.HoDem;
                txtTen.Text = hocVien.Ten;
                chkGioiTinh.Checked = hocVien.GioiTinh;
                txtNgaySinh.Text = hocVien.NgaySinh;
                txtDiaChi.Text = hocVien.DiaChi;
                txtEmail.Text = hocVien.Email;
                txtQuocTich.Text = hocVien.QuocTich;
                txtSoDienThoai.Text = hocVien.SoDienThoai;
                chkTiepTucBoSung.Checked = chkTiepTucBoSung.Visible = false;
            }
            else
            {
                if (lop != null)
                    cmbLop.SelectedValue = lopSelected.MaLopKhoaNganhGUID;
                txtHo.Text = "";
                txtTen.Text = "";
                chkGioiTinh.Checked = false;
                txtNgaySinh.Text = string.Format("{0:dd/MM/yyyy}", DateTime.Now);
                txtDiaChi.Text = "";
                txtEmail.Text = "";
                txtQuocTich.Text = "Việt Nam";
                txtSoDienThoai.Text = "";
                chkTiepTucBoSung.Visible = true;
            }
            txtHo.Focus();
        }

        bool ValidateData()
        {
            errorNotify.Clear();
            if (cmbLop.SelectedIndex == -1)
            {
                errorNotify.SetError(cmbLop, "Bạn chưa chọn lớp");
                return false;
            }
            if (cmbDotTuyenSinh.SelectedIndex == -1)
            {
                errorNotify.SetError(cmbDotTuyenSinh, "Bạn chưa chọn đợt tuyển sinh");
                return false;
            }
            if (txtHo.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtHo, "Bạn chưa nhập họ");
                return false;
            }
            if (txtQuocTich.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtQuocTich, "Bạn chưa nhập quốc tịch");
                return false;
            }
            if (txtNgaySinh.Text.IsNullOrEmpty())
            {
                errorNotify.SetError(txtNgaySinh, "Bạn chưa nhập ngày sinh");
                return false;
            }
            return true;
        }

        private void btnDongY_Click(object sender, EventArgs e)
        {
            if (ValidateData())
            {
                if (hocVien != null)
                {
                    hocVien.MaDotTuyenSinhGUID = cmbDotTuyenSinh.SelectedValue.ToString();
                    hocVien.HoDem = txtHo.Text;
                    hocVien.Ten = txtTen.Text;
                    hocVien.GioiTinh = chkGioiTinh.Checked;
                    hocVien.NgaySinh = txtNgaySinh.Text;
                    hocVien.QuocTich = txtQuocTich.Text;
                    hocVien.SoDienThoai = txtSoDienThoai.Text;
                    hocVien.Email = txtEmail.Text;
                    hocVien.DiaChi = txtDiaChi.Text;
                    hocVien.MaLopKhoaNganhGUID = cmbLop.SelectedValue.ToString();
                    var rs = BizHocVien.Update(hocVien);
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    else
                        DialogUtils.ShowError("Không thể cập nhật");
                }
                else
                {
                    hocVien = new HocVien();
                    hocVien.MaDotTuyenSinhGUID = cmbDotTuyenSinh.SelectedValue.ToString();
                    hocVien.HoDem = txtHo.Text;
                    hocVien.Ten = txtTen.Text;
                    hocVien.GioiTinh = chkGioiTinh.Checked;
                    hocVien.NgaySinh = txtNgaySinh.Text;
                    hocVien.QuocTich = txtQuocTich.Text;
                    hocVien.SoDienThoai = txtSoDienThoai.Text;
                    hocVien.Email = txtEmail.Text;
                    hocVien.DiaChi = txtDiaChi.Text;
                    hocVien.MaLopKhoaNganhGUID = cmbLop.SelectedValue.ToString();
                    var rs = BizHocVien.Add(hocVien, khoaHoc, nganh);
                    hocVien = null;
                    if (rs == CODE_RESULT_RETURN.ThanhCong)
                    {
                        entityToBeAdded++;
                        OnChanged(this, null);
                        if (chkTiepTucBoSung.Checked)
                        {
                            InitInterface();
                        }
                        else
                            this.DialogResult = System.Windows.Forms.DialogResult.OK;
                    }
                    else
                        DialogUtils.ShowError("Không thể thêm mới học viên");
                }
            }
        }

        private void FormQuanLyHocVien_ChiTiet_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (entityToBeAdded > 0)
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void txtNgaySinh_Validating(object sender, CancelEventArgs e)
        {
            var ch = txtNgaySinh.Text.Split(new char[] { '/', '.', '-' }, StringSplitOptions.RemoveEmptyEntries);
            if (ch != null && ch.Count() == 3)
            {
                DateTime o = DateTime.Now;
                if (!DateTime.TryParse(string.Format("{0}/{1}/{2}", ch[1], ch[0], ch[2]), out o))
                    e.Cancel = true;
                else
                    errorNotify.Clear();
            }
            else e.Cancel = true;
        }

    }
}
